package server.sessions;

import java.util.ArrayList;
import java.util.StringTokenizer;

import server.test.FileLoader;

/**
 * genera risposte html personalizzate per l'utente loggato
 * @author cl400782
 *
 */
public class CustomizzatoreRisposteHTML {
	
	private FileLoader loader = new FileLoader();
	
	public CustomizzatoreRisposteHTML() {

		
	}
	
	/**
	 * genera una risposta adeguata basandosi sull'uri della richiesta
	 * @param uri
	 * @param IP dell'utente (per la personalizzazione) 
	 * @return ArrayList contenente le stringhe html
	 */
	public ArrayList<String> generaRispostaHtml(String uri, String IP){
		
		//utente non ancora registrato
		if (!RegistroSessioni.getGestoreSessioni().verificaPresenza(IP)) {
		//caso: pagina di login
			
			StringTokenizer tk = new StringTokenizer(uri);
			String nomefile = tk.nextToken("?");
			System.err.println("nome html:"+nomefile);
		
			//caso: pagina di benvenuto dopo il primo login
			if(tk.hasMoreTokens()){
				tk.nextToken("=");
				String nome = tk.nextToken();
				System.err.println("nome utente:"+nome);
				RegistroSessioni.getGestoreSessioni().registraUtente(IP, nome);
				
				ArrayList<String> htmlBenvenuto =  loader.loadFile("benvenuto");
				
				DatiUtente dati = RegistroSessioni.getGestoreSessioni().getDatiUtente(IP);
				ArrayList<String> htmlBenvenutoPersonale = personalizzaHTML(dati,
						htmlBenvenuto);
				return htmlBenvenutoPersonale;

			}
			return  loader.loadFile("login");
			
		} else {
			//utente già registrato
			//caso: pagina di bentornato
			DatiUtente dati = RegistroSessioni.getGestoreSessioni().getDatiUtente(IP);
			System.err.println(dati.toString());
			
			ArrayList<String> htmlBentornato =  loader.loadFile("bentornato");
			
			ArrayList<String> htmlBentornatoPersonale = personalizzaHTML(dati,
					htmlBentornato);
				
	
			System.err.println(htmlBentornatoPersonale);
			return htmlBentornatoPersonale;
	
		}
		
		
	
	}

	/**
	 * personalizza un html generico con i dati utente salvati ed associati all' IP
	 * @param dati - i dati dell'utente
	 * @param htmlOriginale - l'html generico
	 * @return il documento Personalizzato
	 */
	private ArrayList<String> personalizzaHTML(DatiUtente dati,
			ArrayList<String> htmlOriginale) {
		
		ArrayList<String> htmlPersonale =  new ArrayList<String>();
		
		for (String string : htmlOriginale) {
			string = string.replaceAll("nome_utente", dati.getNome());
			string = string.replaceAll("primo_login", dati.getPrimoLogin());
			htmlPersonale.add(string);
		}
		return htmlPersonale;
	}
	

}
